<?php

namespace App\Http\Controllers\Car;

use App\Models\CarModels\CarPreparation;
use App\Http\Controllers\Controller;
use \App\Models\CarModels\CarInfo;
use http\Env\Response;
use Illuminate\Http\Request;
use Illuminate\Database\QueryException;
use Validator;
/**
 * @group 设备管理->车辆预设->工作量预设的数据接口
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */
class CarPreparationController extends Controller
{
    /**
     * 设备管理->车辆预设->工作量预设
     *
     *
     * @queryParam  work_time 工作时间上限
     * @queryParam  fill_time 一次加水时间
     * @queryParam  area_id 工作区域
     * @queryParam  work_speed_low 作业行驶速度下限
     * @queryParam  work_speed_high 作业行驶速度上限
     * @queryParam  non_work_speed_low 非作业行驶速度下限
     * @queryParam  non_work_speed_high 非作业行驶速度上限
     * @queryParam  level_id 停留时间等级
     * @queryParam  kind_id 预设等级所属车辆车辆类型

     */
    public function index(Request $request)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        return response()->json(encodeMsg(pageQuery(CarPreparation::with('kind')->with('level'),$request),200));
    }


    /**
     * 设备管理->车辆预设->工作量预设添加
     *
     * @queryParam  work_time 工作时间上限
     * @queryParam  fill_time 一次加水时间
     * @queryParam  area_id 工作区域
     * @queryParam  work_speed_low 作业行驶速度下限
     * @queryParam  work_speed_high 作业行驶速度上限
     * @queryParam  non_work_speed_low 非作业行驶速度下限
     * @queryParam  non_work_speed_high 非作业行驶速度上限
     * @queryParam  level_id 停留时间等级
     * @queryParam  kind_id 预设等级所属车辆车辆类型
     * 
     * @bodyParam work_time datetime required 工作时间上限
     * @bodyParam fill_time datetime required 一次加水时间
     * @bodyParam area_id int required 工作区域 外键 区域信息
     * @bodyParam work_speed_low float required 作业行驶速度下限
     * @bodyParam work_speed_high float required 作业行驶速度上限
     * @bodyParam non_work_speed_low float required 非作业行驶速度下限
     * @bodyParam non_work_speed_high float required 非作业行驶速度上限
     * @bodyParam level_id int required 停留时间等级  外键 时间等级
     * @bodyParam kind_id int required 车辆类型 外键 车辆类型
     *
     *
     */
    public function store(Request $request)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        try {
            $data = CarPreparation::create($request->all());
            return response()->json(encodeMsg($data,201), 201);
        } catch (QueryException $e) {
            return response()->json(encodeMsg(["message" => "添加失败"],500), 500);
        }
    }

    /**
     * 设备管理->车辆预设->工作量预设显示(单个信息显示)
     *
     * @queryParam  work_time 工作时间上限
     * @queryParam  fill_time 一次加水时间
     * @queryParam  area_id 工作区域
     * @queryParam  work_speed_low 作业行驶速度下限
     * @queryParam  work_speed_high 作业行驶速度上限
     * @queryParam  non_work_speed_low 非作业行驶速度下限
     * @queryParam  non_work_speed_high 非作业行驶速度上限
     * @queryParam  level_id 停留时间等级
     * @queryParam  kind_id 预设等级所属车辆车辆类型
     */
    public function show($pk)
    {
        $car_data = CarPreparation::with('kind')->with('level')->find($pk);
        if ($car_data == []) {
            return response()->json(encodeMsg(["message" => "没有该设备管理->车辆预设->工作量预设"],404), 404);
        } else {
            return response()->json(encodeMsg($car_data,200), 200);
        }
    }

    /**
     * 设备管理->车辆预设->工作量预设修改
     *
     * @queryParam  work_time 工作时间上限
     * @queryParam  fill_time 一次加水时间
     * @queryParam  area_id 工作区域
     * @queryParam  work_speed_low 作业行驶速度下限
     * @queryParam  work_speed_high 作业行驶速度上限
     * @queryParam  non_work_speed_low 非作业行驶速度下限
     * @queryParam  non_work_speed_high 非作业行驶速度上限
     * @queryParam  level_id 停留时间等级
     * @queryParam  kind_id 预设等级所属车辆车辆类型
     *
     * @bodyParam work_time datetime optional 工作时间上限
     * @bodyParam fill_time datetime optional 一次加水时间
     * @bodyParam area_id int optional 工作区域 外键 区域信息
     * @bodyParam work_speed_low float optional 作业行驶速度下限
     * @bodyParam work_speed_high float optional 作业行驶速度上限
     * @bodyParam non_work_speed_low float optional 非作业行驶速度下限
     * @bodyParam non_work_speed_high float optional 非作业行驶速度上限
     * @bodyParam level_id int optional 停留时间等级  外键 时间等级
     * @bodyParam kind_id int optional 车辆类型 外键 车辆类型
     */
    public function update(Request $request, $pk)
    {
        $carkind = CarPreparation::find($pk);
        if ($carkind == []) {
            return response()->json(["message" => "没有该设备管理->车辆预设->工作量预设"], 404);
        }
        try {
            $carkind->update($request->all());
            return response()->json(encodeMsg($carkind,200), 200);
        } catch (QueryException $e) {
            return response()->json(encodeMsg(["message" => "操作失败"],400), 400);
        }
    }

    /**
     */

    public function destroy($pk)
    {
        $data = CarPreparation::find($pk);
        if ($data == []) {
            return response()->json(encodeMsg(["message" => "没有该设备管理->车辆预设->工作量预设"],404), 404);
        }
        $data->delete();
        return response()->json(encodeMsg(["message" => "删除成功"],204), 200);
    }
}
